/**
 * 导航守卫（路由守卫）  钩子函数
 *    全局守卫
 *      beforeEach      - 全局前置守卫
 *        1. 登录拦截功能
 *        2. 权限校验功能
 *      afterEach       - 全局后置守卫
 *        1. 配合beforeEach实现全局导航进度条的功能 ，nprogress
 *        2. 页面访问统计埋点功能
 *      beforeResolve   - 全局解析守卫
 *        1. 暂无
 *    路由独享守卫
 *      beforeEnter     - 路由独享
 *        1. 登录拦截功能
 *        2. 权限校验功能
 *    组件内守卫
 *      beforeRouteEnter    - 进入
 *        1. 想要在导航的时候就发请求，让请求发送时机更快
 *      beforeRouteUpdate   - 更新
 *        1. 路由参数变化数据不更新问题的处理
 *      beforeRouteLeave    - 离开
 *        1. 离开的二次确认弹窗功能
 *
 * 全局守卫，是通过在 路由器实例对象上挂载的
 *    router.beforeEach((to, from, next) => {})
 *    router.afterEach((to, from) => {})
 *    router.beforeResolve((to, from, next) => {})
 *
 * 路由独享守卫
 *    routes: [
 *      {
 *        path: '',
 *        component: '',
 *        beforeEnter(to, from, next) {
 *        }
 *      }
 *    ]
 *
 * 组件内守卫
 *    {
 *        data() {},
 *        beforeRouteEnter(to, from, next) {},
 *        beforeRouteUpdate(to, from, next) {},
 *        beforeRouteLeave(to, from, next) {}
 *    }
 *
 * 守卫函数中，to、from、next 的作用
 *    1. to   - 要去的路由信息对象
 *    2. from - 来自的路由信息对象
 *    3. next - 函数
 *            next()          放行
 *            next(false)     阻止导航
 *            next('/login')  表示重定向到 /login 路由
 *            next({ name: 'login' })   表示重定向到 login 这个名字的 路由
 *            next(new Error()) 表示抛出导航错误信息
 */

import Vue from "vue";
import App from "./App.vue";

import router from "./router";

Vue.config.productionTip = false;

new Vue({
  router,
  render: (h) => h(App),
}).$mount("#app");
